package cc.telecomdigital.tdstock;

import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;



/**
 * 
 * @author haibo
 * 
 * for avoiding to appear java.lang.OutOfMemoryError: bitmap size exceeds VM
 *
 */
public class BitmapResizer {

	public static Bitmap decodeImage(Resources res, int id ,int requiredSize){
	    try {
	        BitmapFactory.Options o = new BitmapFactory.Options();
	        o.inJustDecodeBounds = true;
	        BitmapFactory.decodeResource(res, id, o);

	        //Find the correct scale value. It should be the power of 2.
	        final int REQUIRED_SIZE=requiredSize;
	        int width_tmp=o.outWidth, height_tmp=o.outHeight;
	        int scale=1;
	        while(true){
	            if(width_tmp/2<REQUIRED_SIZE || height_tmp/2<REQUIRED_SIZE)
	                break;
	            width_tmp/=2;
	            height_tmp/=2;
	            scale*=2;
	        }

	        //decode with inSampleSize
	        BitmapFactory.Options o2 = new BitmapFactory.Options();
	        o2.inSampleSize=scale;
	        return BitmapFactory.decodeResource(res, id, o2);
	    } catch (Exception e) {

	    }
	    return null;
	}

	}
